#
#  CombinedNameController.rb
#  WOVConverter
#
#  Created by James Tuley on 4/23/08.
#  Copyright (c) 2008 __MyCompanyName__. All rights reserved.
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is WOV Suite.
#
# The Initial Developer of the Original Code is
# James Tuley.
# Portions created by the Initial Developer are Copyright (C) 2008
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#           James Tuley <jay+wov@tuley.name> (WOV Suite Author)
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK ***** */
require 'osx/cocoa'

class CombinedNameController < OSX::NSObject
	include OSX
	
	ib_outlets :main_textfield, :window

	attr_accessor :window
	
	ib_action :buttonClick
	def buttonClick(sender)
			NSApp.stopModalWithCode(sender.tag)
	end
	
	def produceNameForFiles(aFiles)
		tFileBaseNames = aFiles.collect{|aFile| File.basename(aFile,File.extname(aFile))}
		
		tLongest = tFileBaseNames.inject(nil){
			|aGreatest,anItem|
			unless (aGreatest)
				anItem
			else
				longest_prefix(aGreatest,anItem)
			end
		}
			
		@main_textfield.setStringValue(tLongest.squeeze(" ").chomp(" "))
	end
	
	def choosenName
		return @main_textfield.stringValue
	end
	
	private
	
	def longest_prefix(s1, s2)
		
		return (0..s1.length).inject(""){|aPrefix,anIndex|
			if(anIndex < s2.length and s2[anIndex] == s1[anIndex])
				aPrefix << s1[anIndex]
			else
				aPrefix << " "
			end
		}

	end
end
